/**
 * 赛博天体系统 - 处理太阳和月亮的显示和动画
 */
export default {
  /**
   * 获取当前时间对应的天体状态
   * @returns {Object} 天体状态对象
   */
  getCelestialState() {
    const now = new Date();
    const hours = now.getHours();
    const minutes = now.getMinutes();
    
    // 计算当前时间在一天中的位置（0-1之间的值）
    const timeOfDay = (hours * 60 + minutes) / (24 * 60);
    
    // 确定是白天还是黑夜
    // 假设早上6点到晚上6点是白天
    const isDaytime = hours >= 6 && hours < 18;
    
    // 计算太阳/月亮的位置
    // 使用正弦函数创建弧形路径
    // 白天：太阳从左向右移动（6点在左侧，18点在右侧）
    // 黑夜：月亮从左向右移动（18点在左侧，次日6点在右侧）
    let position;
    if (isDaytime) {
      // 将6-18点映射到0-1
      position = (hours - 6) / 12;
    } else {
      // 将18-6点映射到0-1
      position = hours >= 18 ? (hours - 18) / 12 : (hours + 6) / 12;
    }
    
    // 计算垂直位置（使用正弦函数创建弧形）
    // 在中午/午夜时达到最高点
    const verticalPosition = Math.sin(position * Math.PI);
    
    // 计算水平位置（0表示左侧，1表示右侧）
    const horizontalPosition = position;
    
    // 计算亮度（白天太阳最亮，黑夜月亮较暗）
    const brightness = isDaytime ? 
      0.7 + 0.3 * Math.sin(position * Math.PI) : // 太阳亮度
      0.3 + 0.2 * Math.sin(position * Math.PI);  // 月亮亮度
    
    return {
      isDaytime,
      horizontalPosition,
      verticalPosition,
      brightness,
      // 返回格式化的时间字符串
      timeString: `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`
    };
  },
  
  /**
   * 获取CSS样式对象
   * @param {Object} state - 天体状态对象
   * @returns {Object} CSS样式对象
   */
  getCelestialStyle(state) {
    // 固定在左上角，不再根据时间变化位置
    const left = 5;
    const top = 2;
    
    // 设置阴影效果，模拟光芒
    const shadowColor = state.isDaytime ? 
      `rgba(255, 200, 0, ${state.brightness})` : // 太阳光芒
      `rgba(200, 200, 255, ${state.brightness})`; // 月亮光芒
    
    return {
      left: `${left}%`,
      top: `${top}%`,
      boxShadow: `0 0 ${state.brightness * 50}px ${state.brightness * 15}px ${shadowColor}`,
      opacity: state.brightness
    };
  }
};